/*
 * @Description: 地图模式主文件
 * @Date: 2022-01-14 15:02:39
 * @Author: yeming
 */

import { sendMapModeToJava } from '../interface.js'

// 1-99 留给航线 100-200 留给自定义点
const MAP_MODE = {
  NORMAL: 0, // 常规模式
  SINGLE_LINE_FLY_EDIT: 1, // 单线飞行打点连线可编辑模式
  SINGLE_LINE_FLY_READONLY: 2, // 单线飞行打点连线不可编辑模式
  // AREA_INSPECTION: 2, // 区域巡检
  // DAI_ZHE_HANG_XIAN: 3, // 带着航线
  GIVE_POINT_TO_FLY: 10, // 指点飞行模式
  CUSTOM_POINT: 100, // 添加自定义点模式
  TAKE_OFF_POINT: 500, // 添加起飞点模式
  SIMULATION_CENTER_POINT: 550, // 仿真区域中心点
  SIMULATION_TAKE_OFF_POINT: 551, // 仿真区域起飞点
  ELECTRIC_FENCE_CIRCLE: 600, // 绘制圆形电子围栏
  ELECTRIC_FENCE_POLYGON: 601, // 绘制多边形电子围栏
  PLAYBACK: 1000 // 回放模式
}

let mapMode = MAP_MODE.NORMAL // 默认开放模式
let curSessionId = 0 // 当前操作对象的sessionId

/**
 * @desc: 设置地图模式
 * @param {number} mode 0-READONLY 1-FREE 2-DRAW
 * @param {number} sessionId 当前操作对象的sessionId（时间戳）
 * @param {String} content 当前地图模式下鼠标提示内容
 * @return {*}
 * @use: 使用示例
 */
function setMapMode (mode, sessionId = 0, content = '') {
  switch (mode) {
    case 0:
      mapMode = MAP_MODE.NORMAL
      console.error('常规模式 ' + mapMode + ' ' + sessionId)
      break
    case 1:
      mapMode = MAP_MODE.SINGLE_LINE_FLY_EDIT
      console.error('单线飞行可编辑 ' + mapMode + ' ' + sessionId)
      break
    case 2:
      mapMode = MAP_MODE.SINGLE_LINE_FLY_READONLY
      console.error('单线飞行不可编辑 ' + mapMode + ' ' + sessionId)
      break
    case 10:
      mapMode = MAP_MODE.GIVE_POINT_TO_FLY
      console.error('指点飞行 ' + mapMode + ' ' + sessionId)
      break
    case 100:
      mapMode = MAP_MODE.CUSTOM_POINT
      console.error('自定义点 ' + mapMode + ' ' + sessionId)
      break
    case 500:
      mapMode = MAP_MODE.TAKE_OFF_POINT
      console.error('起飞点 ' + mapMode + ' ' + sessionId)
      break
    case 550:
      mapMode = MAP_MODE.SIMULATION_CENTER_POINT
      console.error('仿真区域中心点 ' + mapMode + ' ' + sessionId)
      break
    case 551:
      mapMode = MAP_MODE.SIMULATION_TAKE_OFF_POINT
      console.error('仿真区域起飞点 ' + mapMode + ' ' + sessionId)
      break
    case 600:
      mapMode = MAP_MODE.ELECTRIC_FENCE_CIRCLE
      console.error('圆形电子围栏 ' + mapMode + ' ' + sessionId)
      break
    case 601:
      mapMode = MAP_MODE.ELECTRIC_FENCE_POLYGON
      console.error('多边形电子围栏 ' + mapMode + ' ' + sessionId)
      break
    case 1000:
      mapMode = MAP_MODE.PLAYBACK
      console.error('回放模式 ' + mapMode + ' ' + sessionId)
      break
    default:
      console.error('默认提示')
  }
  curSessionId = sessionId
  sendMapModeToJava(mapMode, sessionId) // 告诉java有没有设置成功
  return mapMode
}

/**
 * @desc: 获取地图类型
 */
function getMapMode () {
  return mapMode
}

export {
  MAP_MODE,
  setMapMode,
  getMapMode
}